<template>
  <div class="comment-container">

      <h3>发表评论</h3>

      <hr>

      <textarea v-model="msg" placeholder="请输入要吐槽的内容(最多120字)" maxlength="120"></textarea>

      <mt-button @click="postComment" type="primary" size="large" >发 表 评 论</mt-button>

      <div class="comment-list">
        <div class="comment-item" v-for="(item, index) in comments" :key="item.add_time">
          <!-- 标题 -->
          <div class="comment-title">
            <span>第{{index + 1}}楼&nbsp;&nbsp;用户: {{item.user_name}}</span>
            <span>发表时间: {{ item.add_time | dateFormat}}</span>
          </div>
          <!-- 内容 -->
          <div class="comment-content">
            {{ item.content }}
          </div>
          
        </div>
      </div>

      <mt-button @click="getMore" type="danger" size="large" plain>加 载 更 多</mt-button>


  </div>
</template>

<script>
import { Toast } from "mint-ui";

export default {
  data() {
    return {
      pageindex: 1, // 默认展示第一页
      comments: [], // 评论内容的数组
      msg: "" // 评论消息
    };
  },
  created() {
    this.getCommentByPage();
  },
  methods: {
    getCommentByPage() {
      //根据页码

      this.$http
        .get("api/getcomments/" + this.id + "?pageindex=" + this.pageindex)
        .then(result => {
          if (result.body.status === 0) {
            // this.comments = result.body.message;
            this.comments = this.comments.concat(result.body.message);
          } else {
            Toast("获取评论信息失败!");
          }
        });
    },
    getMore() {
      // 加载更多评论
      this.pageindex++;
      this.getCommentByPage();
    },
    postComment() {
      // 如果没有输入内容，不让发表
      if (this.msg.trim().length <= 0) return Toast("评论内容不能为空!");

      // 点击发表评论
      // post 方法
      // 参数1 : 请求的 URL 地址
      // 参数2 : 发送给服务器的数据对象 { content: '' }
      // 参数3 : 指定要发送给服务器的数据的表单提交格式 { emulateJSON : true } 已经全局配置了
      // trim() ： 去除两边的空格
      this.$http
        .post("api/postcomment/" + this.id, {
          content: this.msg.trim()
        })
        .then(result => {
          if (result.body.status === 0) {
            // 加载最新的评论
            this.comments.unshift({
              user_name: '匿名用户',
              // add_time: new Date().toString(),
              add_time: Date.now(),
              content: this.msg
            });
            this.msg = '';
          } else {
            Toast("发表评论失败!");
          }
        });
    }
  },
  props: ["id"] //使用 props 存放父组件传递过来的 Id值，使用 this.id 可以拿到
};
</script>


<style lang="scss" scoped>
.comment-container {
  h3 {
    font-size: 16px;
  }
  textarea {
    margin: 0;
    font-size: 14px;
  }
  .comment-list {
    font-size: 14px;
    .comment-item {
      .comment-title {
        padding: 0 2px;
        background-color: #cccccc;
        display: flex;
        justify-content: space-between;
        line-height: 28px;
      }
      .comment-content {
        text-indent: 2em;
        line-height: 35px;
      }
    }
  }
}
</style>
